import {
  requestAPI, // 统一封装的请求函数
  baseUrl // 请求API地址
} from '../util/request'

/**
 * 获取购物车中所有的商品
 */
export function getGoodsList(){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/selectShopping"
    }).then(res=>{
      console.log("获取购物车中商品列表成功！",res);
      reslove(res.data)
    }).catch(err=>{
      console.log("获取购物车中商品列表失败！",res);
      reject(err)
    })
  })
}


/**
 * 修改购物车中指定商品的状态
 * @param {*} goods_id 商品的id
 * @param {*} state  商品的状态
 * @param {*} specificationid 商品规格id
 */
export function alterGoodsStatus(goods_id,state,specificationid){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/alterShoppingStatus",
      data:{ goods_id,state,specificationid },
      method:'POST',
      // header:{
      //   ['content-type']:'application/x-www-form-urlencoded'
      // }
    }).then(res=>{
      console.log("修改商品状态成功！",state);
      reslove(res.data)
    }).catch(err=>{
      console.log("修改商品状态失败",err);
      reject(err)
    })
  })
}

/**
 * 修改购物车中所有商品的状态
 * @param {} status  商品状态
 */
export function alterAllGoodsStatus(status){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl+"shopping/alterShoppingStatusAll",
      data:{status},
      method:'POST',
      header:{
        ['content-type']:'application/x-www-form-urlencoded'
      }
    }).then(res=>{
      console.log("修改购物车中所有商品的状态成功！",status);
      reslove(res.data)
    }).catch(err=>{
      console.log("修改购物车中所有商品的状态失败！",err);
      reject(err)
    })
  })
}

/**
 * 删除购物车中的商品：删除数量取决于传递数组中的商品id
 * @param {*} goodsList  包含需要删除商品的id列表
 */
export function removeCartGoods(goodsList){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/delShopping",
      data:goodsList,
      method:"POST",
    }).then(res=>{
      console.log("删除购物车中商品成功！");
      reslove(res.data)
    }).catch(err=>{
      console.log("删除购物车中商品失败！",err);
      reject(err)
    })
  })
}

/**
 * 获取购物车中已选中商品的总数量
 */
export function getCartGoodsTotal(){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/getGoodsAmount"
    }).then(res=>{
      console.log("获取购物车中已选商品的数量成功！",res.data);
      reslove(res.data)
    }).catch(err=>{
      console.log("获取购物车中已选商品的数量失败！",err);
      reject(err)
    })
  })
}

/**
 * 添加一件指定ID的商品到购物车
 * @param {Number}} goodsId
 */
export function goodsSelectAmountPlus(goodsId){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/plus",
      method:"POST",
      data:goodsId,
    }).then(res=>{
      console.log("添加商品在购物车中的数量成功，最新数量为：",res);
      reslove(res.data)
    }).catch(err=>{
      console.log("添加商品在购物车中的数量失败，最新数量为：",err);
      reject(err)
    })
  })
}

/**
 * 从购物车中减少一件指定ID的商品
 * 
 */
export function goodsSelectAmountMinus(goods_id,specificationid){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/minus",
      method:"POST",
      data:{goods_id,specificationid},
    }).then(res=>{
      console.log("减少商品在购物车中的数量成功，最新数量为：",res);
      reslove(res.data)
    }).catch(err=>{
      console.log("减少商品在购物车中的数量失败，最新数量为：",err);
      reject(err)
    })
  })
}

/**
 * 获取购物车每一种商品的数量以及ID
 */
export function getCartAllGoodsNum(){
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + 'shopping/getShoppingAllNum'
    }).then(res=>{
      console.log("获取购物车每一中商品的数量以及ID成功！",res.data);
      reslove(res.data)
    }).catch(err=>{
      console.log("获取购物车中每一件商品的数量以及ID失败！",err);
      reject(err)
    })
  })
}
/**
 * 添加指定数量的指定商品到购物车中
 * @param {goodsId} goodsId 添加的商品的id
 * @param {num} num 添加的商品的数量
 */
export function addGoods(goodsId,num) {
  return new Promise((reslove,reject)=>{
    requestAPI({
      url:baseUrl + "shopping/plusNum",
      method:"POST",
      data:{goodsId,num},
      header:{
        ['content-type']:'application/x-www-form-urlencoded'
      }
    }).then(res=>{
      console.log("添加商品在购物车中的数量成功，最新数量为：",res);
      reslove(res.data)
    }).catch(err=>{
      console.log("添加商品在购物车中的数量失败，最新数量为：",err);
      reject(err)
    })
  })
}
/**
   * 获取订单批注
   */
  export function getOrderPostil(){
      return requestAPI({
        url:baseUrl+"indent/postil/getOrderPostil"
      })
  }